Divers kubectl :
kubectl get pods kubectl --namespace kube-system get pods kubectl get all (dans le namespace par défaut) kubectl get pod --all-namespaces kubectl config set-context --current --namespace default kubectl get services --all-namespaces
Récuperer toutes les api dispos sur kubectl :
kubectl api-resources
Créer un token sur un user :
kubectl -n kubernetes-namespace create token user
Se connecter sur un pod :
kubectl exec --stdin --tty <pod> -- /bin/bash (par exemple)
Obtenir des logs sur un pod
kubectl logs mariadb-deployment-d7897d899-kv4z9
Passer des commandes sur le cluster en démarrant une image debian ephémère :
kubectl run debianpod -i --tty --image debian:bullseye --restart=Never -- bash
Par exemple utilisation client mysql sur une debian éphémère :
apt install mariadb-client mysql -uradmin -pXXXXXX -hmariadb.mariadb.svc.cluster.local
Créer un secret "from-literal" :
kubectl create secret generic my-test-secret --from-literal=rootpassword=alphabeta
Le Supprimer :
kubectl delete secret my-test-secret
Ensuite pour le récupérer :
kubectl get secret my-test-secret -o go-template='{{.data}}' map[rootpassword:YWxwaGFiZXRh] echo "YWxwaGFiZXRh" | base64 -d alphabeta
Visualiser les labels des nodes
kubectl get nodes --show-labels
... le seter :
kubectl label nodes <your-node-name> label=value
Affecter un label à quelque chose (des pods par exemple)
spec: nodeSelector: label: value
Exsemple de Security Context
image: toto:version volumesMount: (...) securityContext: privileged: true
Affinité sur un Node particulier (exemple alice)
kubectl label nodes alice clefnode=primary (par exemple) kubectl get node alice --show-labels
... et ensuite
affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: # preferred marche aussi, autant coté nodeAffinity que sur podAffinity nodeSelectorTerms: - matchExpressions: - key: clefnode operator: In values: - primary # options possibles sur le pod avec labelSelector # - labelSelector # matchLabels: # app: backend (par exemple) # topologyKey : "kubernetes.io/hostname" (forcer sur les pods sur le même serveur)
Avoir des explications sur une spec
kubectl explain pod.spec.affinity.nodeAffinity (par exemple)
Forcer la suppression de pv/pvc :
kubectl patch pv <pv_name> -p '{"metadata":{"finalizers":null}}' kubectl delete pv <pv_name> --grace-period=0 --force PVC_NAME="<pvc-name>"; kubectl get pods,deployments,statefulsets,daemonsets,replicasets,jobs,cronjobs --all-namespaces -o json | jq --arg PVC "$PVC_NAME" '.items[] | select(.spec.template.spec.volumes[]?.persistentVolumeClaim.claimName == $PVC) | .metadata.namespace + "/" + .metadata.name + " (" + .kind + ")"'
